﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Web;
using System.Web.Mvc;
using WebDKMH.Models;

namespace WebDKMH.Controllers
{
    public class UserController : Controller
    {
        //
        // GET: /User/
        //
        /// <summary>
        /// 
        /// </summary>
        dangkymonhocEntities2 db = new dangkymonhocEntities2();

        public ActionResult Dangnhap()
        {
            var dkmh = (from dk in db.thongbao1 where dk.tgdk == true select dk).FirstOrDefault();
            if (dkmh != null)
            {
                Session["noidung"] = dkmh.noidung.ToString();
                Session["tieude"] = dkmh.tieude.ToString();
                Session["id"] = dkmh.id.ToString();
            }
            else
            {
                Session["noidung"] =null;
                Session["tieude"] = null;
                Session["id"] = null;
            }
            var model = new MailModel();
            return View(model);
        }
        [HttpPost]
        public ActionResult Dangnhap(FormCollection col)
        {
            string smasv = col["masv"];
            string smatkhau = col["matkhau"];
            if (ModelState.IsValid)
            {
                var v = db.sinhviens.Where(a=>a.masv==smasv&&a.matkhau==smatkhau).FirstOrDefault();
                if (v != null)
                {
                    Session["LoginUserID"] = v.masv.ToString();
                    Session["ten"] = v.ten.ToString();
                    //Session["email"] = v.email.ToString();
                    Session["sex"] = v.gioitinh.ToString();
                    Session["ho"] = v.ho.ToString();
                    Session["khoahoc"] = v.khoahoc.ToString();
                    Session["noisinh"] = v.noisinh.ToString();
                    Session["ngaysinh"] = v.ns0.ToString();
                    //Session["tenkhoa"] = v.tenkhoa.ToString();
                    Session["malop"] = v.malop.ToString();
                    return RedirectToAction("Chuyenhuong");
                }
                else
                {
                    var admin = db.quanlies.Where(a=>a.hotenql==smasv&&a.matkhauql==smatkhau).FirstOrDefault();
                    if (admin != null)
                    {
                        Session["maql"] = admin.maql.ToString();
                        Session["ten"] = admin.hotenql.ToString();
                        return RedirectToAction("Index", "Admin");
                    }
                }
            }
            return View();
        }
        public ActionResult Chuyenhuong()
        {
            string smasv = Session["LoginUserID"].ToString();
            var c = db.sinhviens.Where(a => a.matkhau.Equals(a.ngaysinh)&&a.masv.Equals(smasv)).FirstOrDefault();
            if (c!=null)
            {
                return RedirectToAction("Doimatkhau", "User");
            }
            else return RedirectToAction("Index", "Trangchu");
        }
        public ActionResult logoff()
        {
            Session.Clear();
            return RedirectToAction("Dangnhap", "User");
        }

        public ActionResult Doimatkhau()
        {
            return View();
        }
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Doimatkhau(FormCollection col)
        {
            try
            {
                string smasv = Session["LoginUserID"].ToString();
                string mkcu = col["mkcu"];
                string mk = col["mkmoi"];
                var stest = db.sinhviens.Where(a => a.masv.Trim().Equals(smasv.Trim()) && a.matkhau.Trim().Equals(mkcu.Trim())).FirstOrDefault();
                if (stest != null)
                {
                    stest.matkhau = mk;
                    UpdateModel(stest);
                    db.SaveChanges();
                    return RedirectToAction("Index", "Trangchu");
                }
                else
                    return RedirectToAction("Doimatkhau");
             
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
            {
                Exception raise = dbEx;
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        string message = string.Format("{0}:{1}",
                            validationErrors.Entry.Entity.ToString(),
                            validationError.ErrorMessage);
                        // raise a new exception nesting  
                        // the current instance as InnerException  
                        raise = new InvalidOperationException(message, raise);
                    }
                }
                throw raise;
            }
        }
        public ActionResult Thongtin()
        {
            if(Session["LoginUserID"]!=null)
            { 
            string smasv = Session["LoginUserID"].ToString();
            var tt = (from t in db.sinhviens
                        where t.masv == smasv
                        select t).ToList();
            return View(tt);
            }
            else
            {

                return RedirectToAction("Dangnhap");

            }
           
        }

        public ActionResult Quenmatkhau()
        {
            var model = new MailModel();
            return View(model);
        }
        [HttpPost]
        public ViewResult Quenmatkhau(MailModel model)
        {
           dangkymonhocEntities2 db = new dangkymonhocEntities2();
            if (ModelState.IsValid)
            {
                string smtpUserName = "dkmh-dhqn@el.qnamuni.edu.vn";
                string smtpPassword = "ba'd-an100288";
                string smtpHost = "203.162.31.118";
                int smtpPort = 25; //cua server
                string msvs = model.msv;
                string toEmail = model.Email; //"2thuanpro@gmail.com"; trong csdl sv
                string subject = "Khôi phục mật khẩu - Hệ thống đăng ký môn học Trường Đại học Quảng Nam";
                string chuoi = "";
                var mk = (from c in db.sinhviens
                          where c.masv == msvs
                          orderby c.masv descending
                          select c).Take(1).ToList();
                for (int i = 0; i < mk.Count; i++)
                {
                    chuoi += "<br>Chào " + mk[i].ten + " !</br>" +
                             "<br> Bạn đã yêu cầu khôi phục lại mật khẩu từ hệ thống đăng kí môn học của Trường Đại Học Quảng Nam." +
                             "<br>- Tên đăng nhập: " + mk[i].masv +
                             "<br>- Mật khẩu của bạn là: " + mk[i].matkhau +
                             "<br><h2>Ghi chú:</h2>" +
                             "<br><i><b>Email này được gửi tự động từ Hệ thống đăng ký môn học của Trường Đại học Quảng Nam. Xin vui lòng không trả lời email. Trân trọng cảm ơn!</b></i>";
                }
                ViewBag.db = chuoi;
                //  string body ="mat khẩu là:";
                EmailService service = new EmailService();
                bool kq = service.Send(smtpUserName, smtpPassword, smtpHost, smtpPort, toEmail, subject, chuoi);

                if (kq) ModelState.AddModelError("", "Tin nhắn đã được gửi trong Email");
                else ModelState.AddModelError("", "Không gửi được, hãy thử lại");
            }


            return View(model);

        }
       
    }
}
